build: fix linking support on macOS with Clang
authorChristian Hergert <chergert@redhat.com>
Sat, 18 Jul 2020 00:57:17 +0000 (17:57 -0700)
committerChristian Hergert <chergert@redhat.com>
Tue, 21 Jul 2020 21:45:12 +0000 (14:45 -0700)
This was preventing any sort of building on macOS, even though the quartz
backend is currently non-functional. Fixing this is a pre-requisite to
getting a new macOS backend compiling.

gdk/meson.build
gtk/meson.build
meson.build
testsuite/gtk/meson.build

index ac14c3b6feac669cc540fa57c7e5eac3663c7e3f..972ec0f166d76a55bd00a7c36e7671f829fdac6d 100644 (file)
@@ -216,6 +216,11 @@ if wayland_enabled or broadway_enabled
   endif
 endif
 
+libgdk_c_args = [
+  '-DGTK_COMPILATION',
+  '-DG_LOG_DOMAIN="Gdk"',
+]
+
 gdk_backends = []
 gdk_backends_gen_headers = []  # non-public generated headers
 foreach backend : ['broadway', 'quartz', 'wayland', 'win32', 'x11']
@@ -235,16 +240,12 @@ if gdk_backends.length() == 0
   error('No backends enabled')
 endif
 
-# FIXME: might have to add '-xobjective-c' to c_args for quartz backend?
 libgdk = static_library('gdk',
   sources: [gdk_sources, gdk_backends_gen_headers, gdkconfig],
   dependencies: gdk_deps + [libgtk_css_dep],
   link_with: [libgtk_css, ],
   include_directories: [confinc, gdkx11_inc, wlinc],
-  c_args: [
-    '-DGTK_COMPILATION',
-    '-DG_LOG_DOMAIN="Gdk"',
-  ] + common_cflags,
+  c_args: libgdk_c_args + common_cflags,
   link_whole: gdk_backends,
   link_args: common_ldflags)
 
index bb08e506a8fee783317c4b654352e9a30a9151f8..9a209b468fd89a1072834dff8d136fa6c443fb8c 100644 (file)
@@ -1053,6 +1053,12 @@ if cc.has_header('langinfo.h')
   endforeach
 endif
 
+# Maintain compatibility with autotools
+gtk_ldflags = []
+if os_darwin
+  gtk_ldflags += [ '-compatibility_version 1', '-current_version 1.0', ]
+endif
+
 # Library
 libgtk = library('gtk-4',
                  soversion: gtk_soversion,
@@ -1062,7 +1068,7 @@ libgtk = library('gtk-4',
                  include_directories: [confinc, gdkinc, gskinc, gtkinc],
                  dependencies: gtk_deps + [libgtk_css_dep, libgdk_dep, libgsk_dep],
                  link_with: [libgtk_css, libgdk, libgsk, ],
-                 link_args: common_ldflags,
+                 link_args: common_ldflags + gtk_ldflags,
                  install: true)
 
 gtk_dep_sources = [gtkversion, gtktypebuiltins_h]
index 1b3358fe702f8760993c48514bdd260d99687300..2d33e6fe34c405fef22b26284500829eefb70d95 100644 (file)
@@ -314,11 +314,6 @@ if os_unix and not os_darwin
   endforeach
 endif
 
-# Maintain compatibility with autotools
-if os_darwin
-  common_ldflags += [ '-compatibility_version 1', '-current_version 1.0', ]
-endif
-
 confinc = include_directories('.')
 gdkinc = include_directories('gdk')
 gskinc = include_directories('gsk')
index 8f1828aa0cba1eee00d6b3dadc460618acd16a32..45bbf967d53403abbb9e25197b7f6b989f123741 100644 (file)
@@ -4,7 +4,11 @@ testdatadir = join_paths(installed_test_datadir, 'gtk')
 gtk_tests_export_dynamic_ldflag = []
 
 if cc.get_id() != 'msvc'
-  gtk_tests_export_dynamic_ldflag = ['-Wl,--export-dynamic']
+  if os_darwin
+    gtk_tests_export_dynamic_ldflag = ['-Wl,-export_dynamic']
+  else
+    gtk_tests_export_dynamic_ldflag = ['-Wl,--export-dynamic']
+  endif
 endif
 
 # Available keys for each test: